『詳解 Apache Spark』出版記念イベント #shokaispark 参加レポート
IT系勉強会ウォッチャーの川崎です。最近、オフィスが秋葉原から岩本町(秋葉原駅から徒歩10分ほど)へ引越しになりました。
今回は、2016年5月11日(水)に開催された 『詳解 Apache Spark』出版記念イベントに参加してきたので、イベントの様子をご紹介いたします。
イベントの内容
執筆陣7人によるLT大会が行われました。
ハッシュタグ:#shokaispark
データ分析業界の理想と現実 - Spark普及の歴史を添えて
下田倫大さん(ブレインパッド)1章〜3章担当
- Spark登場時、夢とロマンを見た
- 2013年: 大規模データ処理はHadoopで集計
- 2014年: Sparkと出会う
- 第一印象: Python、Rのインターフェースがある
- 2015年: ブレインパッド社としてビジネスモデル的にSparkのメリットが大きくない
- 分析基盤をお客様に提案する立場では、新しいものの導入が難しい
- ニーズが必要
- DeltaCubeという自社プロダクトで導入
- 効率化からイノベーションへ
データマネジメントツールDeltaCubeでのSpark利用
師岡一成さん(ブレインパッド)1章〜3章担当
- DeltaCube: DMP(データ・マネジメント・プラットフォーム)のデータから、セグメントを作成するツール
- 初期:2014年〜
- 行動ログを手動で検索→セグメント作成
- Impara、Prestoを使った
- 中期:2015年〜
- 元々機能的にマニアック
- 広告運用の手間がかからないライト路線のニーズあり
- 一連の流れを自動化
- DeltaCube自動でユーザをクラスタリング
- RToaster自動でABテストして最適化
- Sparkのメリット
- ETL、集計、機械学習が同一のプラットフォームでできる
- 現在
- YARNとPrestoの併用は止めたいが、統一できず
- Sparkはディスク書き込み処理がある
- オンラインからの検索性能でPrestoに軍配
- オンライン系:Presto
- バッチ系:Spark
- まとめ
- Sparkの導入は、標準コンポーネントが多数あり、MapReduceに比べ敷居が低い
- Spark もっと流行って
Dynamic Resource Allocation in Apache Spark
今井雄太さん(Hortonworks)4章担当
Dynamic Resource Allocation in Apache Spark
- Sparkとの出会い
- Amazon KinesisのConsumerとして
- Spark Streaming
- アプリ開発者に優しい
- コードわかりやすい(scalaのword countの例)
- Sparkの運用の話
- 1.RDD Graph
- 分散処理を気にせず書ける
- 2.DAG Scheduler
- RDDのオブジェクトは見た目は配列
- ノードのメモリ上に保持されている配列、のオブジェクト
- たくさんのノード上で、データが分散保存されている
- taskとjob
- 3.DYNAMIC RESOUCE ALLOCATIONという機能の話
- 動的に足す
- 不要なものを削除する
Help me! Help me with DNN in Spark!!
石川有さん(リクルートテクノロジーズ アドバンステクノロジーラボ)5章担当
- Spark2.0向けにDNNの機能追加(Auto encoder)は見送り
- Help!
- 現状の確認
- MultilayerPerceptronClassifier
- L-BFGS
- Sigmoid、Softmaxのみ
- 問題
- Regression対応のために最適化アルゴリズムとの依存関係を見直す必要性
- SGDは非効率で精度が悪い
- Google Inception-v3のような複雑なトポロジーを定義できない
- CNNのような多次元配列のような入力をサポートしていない
- 線形代数ライブラリbreezeが使いにくいし拡張しにくい
- 依存関係のため、低レイヤーまで潜っていかないといけない
- Public APIを変更するには、議論を根気よくやらなければならない
- MultilayerPerceptronClassifier
- 相談にのってもいいよ、という人募集
scalatestでSpark StreamingのUnitを書く話
田中裕一さん(日本IBM) 6章担当
Hadoop/Spark周りで、新しい利用事例をつくる仕事
- 100万人のデータ分析教育
- 300億回APIコール/日の事例
- Spark as a Service
- Blue mix
- Jupiterノートブック
- 30日無償
- StreamingのUnitテストが面倒なこと
- アプリ側で状態を保つため、Unitテストが組みづらい
- Streamingは外部との接続が前提なためUnitが書きにくい
- 複数のmicro-batchの集計結果などの書き方が難しい(window処理など)
- 本書での対応
- やったこと
- 1Unit側でStream作成
- 2テストデータを作成してStreamに渡す
- 3処理結果の出力
- 処理部分と接続部分は切り分けて書く
- やったこと
- Unitの組みやすいアプリの形
- まとめ
- さくっと書けるけど、構造化しないと汚いコードに
spark.ml の API で XGBoost を扱いたい!
小宮篤史さん(スマートニュース)7章担当
- SmartNewsのエンジニア
- 広告オークションの設計
- 広告配信の最適化
- 今日のトピック
- 選択肢2つ
- XGBoost on Spark
- 勾配ブースティングの実装の1つ
- 決定木に対する勾配ブースティングは、MLlibでも実装されている
- Hagglerな方々を中心に人気がある
- pure Scala
- Spark packagesに登録されている
- どこまで忠実か不明
- 開発が活発ではない
- xgboost4j-spark
- DMLCが提供している公式のSpark integration
- DataFrame非対応
- C++実装にお任せ
- 実装のポイント 31/32/33
Sparkで始めるお手軽グラフデータ分析
加嵜長門(DMM.comラボ) 8章担当
- Spark Conference Japan アンケート GraphX 30人!
- グラフ処理系
- 使いづらさに対するブレイクスルー
- GraphFrameの登場
- 正式なSparkには入ってない
- Spark GraphXとDataFrames(SparkSQL)の統合
- そもそも、グラフデータとは
- つながりを表現するデータ構造
- ER図
- 路線図
- Webグラフ
- 家系図
- データ構造の1つ
- 配列
- 連想配列
- リスト
- 関係
- etc.
- グラフ構造
- 隣接行列、縦横で表現
- それってグラフじゃないとできないの?
- 他の選択肢もある
- さまざまなデータ構造や分析手法を活用して、多角的な視点を持つことが重要
- 直感的にわかりやすい
- 一長一短だとは思う
- グラフを使う
- 口コミを使ったマーケティング
- 影響力の強いユーザの抽出
- クラスター分析
- 口コミを使ったマーケティング
- グラフの活用例
- 不正検知
- 偽装保険金詐欺
- 少人数で何度も事故に巻き込まれている
- 不正検知
- クレジットカード詐欺
- 少人数で、住所や電話番号を使いまわしている
- 検知が難しかった
- 「パナマ文書」
- 多くの会社を流れるお金の流れを分析
- 不正検知
- グラフDB
- Neo4j Titan
- グラフ処理系
- GraphX GraphLab
- 分散処理による高スループット
- 耐障害性
- グラフに特化しない汎用的なデータ構造
- 表形式やベクトルとシームレスに結合できる
- GraphX GraphLab
最後に
Developers.IOのSpark関連記事のリンクを掲載しておきますので、よろしければご覧ください。